package util

import (
	"encoding/json"
	"errors"
	"k8s.io/klog"
)

// CopyJsonStruct
/**
 * 功能描述：复制json结构体的数据
 * @author KangXu
 * @param source 源结构体
 * @param dest 目标结构体
 * @return error
 */
func CopyJsonStruct(source interface{}, dest interface{}) error {
	sByte, err := json.Marshal(source)
	if err != nil {
		klog.Error("解析json结构体异常")
		return err
	}
	err = json.Unmarshal(sByte, dest)
	if err != nil {
		klog.Error("复制json结构体异常")
		return err
	}
	return nil
}

// CopyUint8Struct
/**
 * 功能描述：复制uint8结构体的数据
 * @author KangXu
 * @param source 源结构体
 * @param dest 目标结构体
 * @return error
 */
func CopyUint8Struct(source interface{}, dest interface{}) error {
	bytes := make([]byte, 0)
	if values, ok := source.([]uint8); ok {
		for _, value := range values {
			bytes = append(bytes, value)
		}
	} else {
		err := errors.New("解析uint8结构体异常")
		klog.Error(err)
		return err
	}
	err := json.Unmarshal(bytes, dest)
	if nil != err {
		klog.Error("复制uint8结构体异常")
		return err
	}
	return nil
}
